package o2o.task.shop;

import o2o.cache.shop.ShopStatisticsPreDayMemory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import o2o.system.data.SYS_SETTINGS;

//每天0点重新加载一次每日订单编号
@Component
public class ShopStatisticsPreDayTask {


    public static boolean isRun = false;


    //定时执行。每天凌晨 00:00 执行一次
    //秒  分  时  日  月  星期几  年
    @Scheduled(cron = "0 0 0 * * *")
    public void reloadMemory() {
        System.out.println("店铺每日订单编号重新加载开始--");
        ShopStatisticsPreDayMemory.getInstance().run();
        System.out.println("--店铺每日订单编号重新加载结束");
    }


    // 检验该店铺是否该到上下班时间
    //定时执行。每隔 执行一次
    //秒  分  时  日  月  星期几  年
//    @Scheduled(cron = "0 0/30 *  * * ? ")    //每半点执行一次
//    @Scheduled(cron = "0/30 * *  * * ? ")   //每30秒执行一次
//    public void shopIsWork() {
//        if (!isRun) {
//            return;
//        }
//        List<ShopInfo> shoplist = ShopMemory.getInstance().list();
//        // 获取当前时间
//        Calendar now = Calendar.getInstance();
//        // 小时为24点特殊处理
//        int hour = now.get(Calendar.HOUR_OF_DAY);
//        if (hour == 0) {
//            hour = 24;
//        }
//        // 分钟为个位数特殊处理
//        int mI = now.get(Calendar.MINUTE);
//        String minute = "";
//        if (mI < 10) {
//            minute = "0" + mI;
//        } else {
//            minute = "" + mI;
//        }
//
//        String nowTime = hour + ":" + minute;
//        nowTime = nowTime.replace(":", "");
//        System.out.println("此刻" + nowTime);
//        if (ValidateUtil.isAbsList(shoplist)) {
//            for (int i = 0; i < shoplist.size(); i++) {
//                if (null == shoplist.get(i)) {
//                    continue;
//                }
//                // 是否锁定 0:锁定,1:正常
//                if (0 != shoplist.get(i).getIsLock() - 1) {
//                    continue;
//                }
//                // 自动上下班   1. 手动 0 自动
//                if (0 == shoplist.get(i).getAutoClose() - 1) {
//                    continue;
//                }
//                // 关闭状态 0:关闭,1:正常
//                if (0 != shoplist.get(i).getIsOpen() - 1) {
//                    continue;
//                }
//
//                Integer isWork = shoplist.get(i).getIsWork(); // 是否营业 0:停业,1:营业
//                Long shopId = shoplist.get(i).getId();   // 店铺Id
//
//                if (ValidateUtil.isNotNull(shoplist.get(i).getWorktime()) && !shoplist.get(i).getWorktime().equals("0")) {
//                    // 某店铺各个时间段
//                    String[] workTime = shoplist.get(i).getWorktime().split(",");
//                    if (null != workTime && workTime.length > 0) {
//                        Boolean flag = false;
//                        for (int j = 0; j < workTime.length; j++) {
//                            if (null == workTime[j]) {
//                                continue;
//                            }
//                            String s = workTime[j];
//                            String[] timePoint = s.split("-");
//                            //营业时间点（开始结束时间）
//                            Long starTime = Long.parseLong(timePoint[0].replace(":", ""));
//                            Long endTime = Long.parseLong(timePoint[1].replace(":", ""));
//
//                            if (null == starTime || null == endTime || null == nowTime) {
//                                continue;
//                            }
//                            // 营业时间在营业范围内则上班
//                            if (endTime < starTime) {   // 开始时间大于结束时间  例：24:00-1:00
//                                if (endTime.compareTo(Long.parseLong(nowTime)) <= 0 && starTime.compareTo(Long.parseLong(nowTime)) > 0) {
//                                    //todo 此刻需打烊ing
////                                    flag = false;
//                                } else {
//                                    //todo 此刻需营业ing
//                                    flag = true;
//                                }
//                            } else {  // 开始时间小于结束时间  例：8:00-9:00
//                                if (starTime.compareTo(Long.parseLong(nowTime)) <= 0 && endTime.compareTo(Long.parseLong(nowTime)) >= 0) {
//                                    //todo 此刻需营业ing
//                                    flag = true;
//                                } else {
//                                    //todo 此刻需打烊ing
////                                    flag = false;
//                                }
//                            }
//                            if (flag) {
//                                break;
//                            }
//                        }
//
//                        // 设置为营业
//                        if (flag) {
//                            // 店铺需为停业中
//                            if (null != isWork && 0 != isWork - 1) {  // 是否营业 0:停业,1:营业
//                                StringBuilder sb = new StringBuilder();
//                                sb.append("update ").append(PojoTables.ShopInfo).append(" set isWork= 1")
//                                        .append(" where delFlag = 0 and id =").append(shopId);
//                                try {
//                                    UserDaoSql.getInstance().executeBySql(sb.toString());
//                                } catch (SQLException e) {
//                                    e.printStackTrace();
//                                    continue;
//                                }
////                                System.out.println(shoplist.get(i).getShopName() + "营业时间：" + nowTime);
//                                //缓存更新
//                                ShopMemory.getInstance().modifyById(shopId);
//                            }
//                        } else {
//                            // 设置为打烊
//                            // 店铺需为营业中
//                            if (null != isWork && 0 == isWork - 1) {
//                                StringBuilder sb = new StringBuilder();
//                                sb.append("update ").append(PojoTables.ShopInfo).append(" set isWork=0")
//                                        .append(" where delFlag = 0 and id =").append(shopId);
//                                try {
//                                    UserDaoSql.getInstance().executeBySql(sb.toString());
//                                } catch (SQLException e) {
//                                    e.printStackTrace();
//                                    continue;
//                                }
////                                System.out.println(shoplist.get(i).getShopName() + "打烊时间：" + nowTime);
//                                //缓存更新
//                                ShopMemory.getInstance().modifyById(shopId);
//                            }
//                        }
//                    }
//                }
//            }
//        }
//    }


    // 检验该店铺是否该到上下班时间
    //定时执行。每隔 执行一次
    //秒  分  时  日  月  星期几  年
//    @Scheduled(cron = "0 0/30 *  * * ? ")    // 每半点执行一次
    @Scheduled(cron = "0/30 * *  * * ? ")   // 每30秒执行一次
    public void shopIsWork_v2() {
        // cancel by zhuwx 全都开启自动上线班
//        if (!isRun) {
//            return;
//        }
        if (null != SYS_SETTINGS.AUTO_UP_DOWN_WORK_MODEL && 0 == 1 - SYS_SETTINGS.AUTO_UP_DOWN_WORK_MODEL) {// 0全时段自动上下班，1只上下班时间点处理
            ShopWorkTaskUtils.autoWorkOnOrOffV2();
        } else {
            // 0全时段自动上下班
            ShopWorkTaskUtils.autoWorkOnOrOff();
        }
    }

    @Scheduled(cron = "0/30 * *  * * ? ")   // 每30秒执行一次
    public void batchShopLog() {
        ShopWorkTaskUtils.batchShopLog();
    }


    //    public void reloadMemory2() throws ParseException {
//        if (!isRun) {
//            return;
//        }
//        List<ShopInfo> shoplist = ShopMemory.getInstance().list();
    // 获取当前时间
//        Calendar now = Calendar.getInstance();
    // 小时为24点特殊处理
//        int hour = now.get(Calendar.HOUR_OF_DAY);
//        if (hour == 0) {
//            hour = 24;
//        }
    // 分钟为个位数特殊处理
//        int minute = now.get(Calendar.MINUTE);
//        String minute = "";
//        if (mI < 10) {
//            minute = "0" + mI;
//        } else {
//            minute = "" + mI;
//        }
//        String nowTime = hour + ":" + minute;
//        nowTime = nowTime.replace(":", "");
//        System.out.println("此刻" + nowTime);
//        24:00-01:00,11:00-23:45
//        String format = "HH:mm";
//        SimpleDateFormat sdf = new SimpleDateFormat(format);
//
//        String nowTime = sdf.format( new Date());
//        String startTime = "05:00";
//        String endTime = "06:00";
//
//        try {
//            Date nowDate = sdf.parse(nowTime);
//            Date startDate = sdf.parse(startTime);
//            Date endDate = sdf.parse(endTime);
//
//            System.out.println("此刻------------" + nowDate.getTime());
//            System.out.println("开始时间" + startDate.getTime());
//            System.out.println("结束时间" + endDate.getTime());
//
//            if (nowDate.getTime() == startDate.getTime()
//                    || nowDate.getTime() == endDate.getTime()) {
//                //todo 此刻在营业ing
//                System.out.println("此刻在营业ing1");
//            }
//            Calendar date = Calendar.getInstance();
//            date.setTime(nowDate);
//
//            Calendar begin = Calendar.getInstance();
//            begin.setTime(startDate);
//
//            Calendar end = Calendar.getInstance();
//            end.setTime(endDate);
//
//            if (date.after(begin) && date.before(end)) {
//                //todo 此刻在营业ing
//                System.out.println("此刻在营业ing2");
//            } else {
//                //todo 此刻在该打烊ing
//                System.out.println("此刻在该打烊ing");
//            }
//
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }

//        if (ValidateUtil.isAbsList(shoplist)) {
//            for (int i = 0; i < shoplist.size(); i++) {
//                if (null == shoplist.get(i)) {
//                    continue;
//                }
//                // 是否锁定 0:锁定,1:正常
//                if (0 != shoplist.get(i).getIsLock() - 1) {
//                    continue;
//                }
//                // 自动上下班   1. 手动 0 自动
//                if (0 == shoplist.get(i).getAutoClose() - 1) {
//                    continue;
//                }
//                // 关闭状态 0:关闭,1:正常
//                if (0 != shoplist.get(i).getIsOpen() - 1) {
//                    continue;
//                }
//
//                Integer isWork = shoplist.get(i).getIsWork(); // 是否营业 0:停业,1:营业
//                Long shopId = shoplist.get(i).getId();   // 店铺Id
//
//                if (ValidateUtil.isNotNull(shoplist.get(i).getWorktime()) && !shoplist.get(i).getWorktime().equals("0")) {
//                    // 某店铺各个时间段
//                    String[] workTime = shoplist.get(i).getWorktime().split(",");
//                    if (null != workTime && workTime.length > 0) {
//                        Boolean flag = false;  // 该店铺是否需要下班 默认需要
//                        for (int j = 0; j < workTime.length; j++) {
//                            if (null == workTime[j]) {
//                                continue;
//                            }
//                            String s = workTime[j];
//                            String[] timePoint = s.split("-");
//                            //营业时间点（开始结束时间）
//                            Long starTime = Long.parseLong(timePoint[0].replace(":", ""));
//                            Long endTime = Long.parseLong(timePoint[1].replace(":", ""));
//
//                            if (null == starTime || null == endTime || null == nowTime) {
//                                continue;
//                            }
//                            // 营业时间在营业范围内则上班
////                             2400  100
//                            if (starTime.compareTo(Long.parseLong(nowTime)) <= 0 && endTime.compareTo(Long.parseLong(nowTime)) >= 0) {
//                                // 如果该店铺状态不是上班ing
//                                if (null != isWork && 0 != isWork - 1) {
//                                    StringBuilder sb = new StringBuilder();
//                                    sb.append("update ").append(PojoTables.ShopInfo).append(" set isWork= 1")
//                                            .append(" where delFlag = 0 and id =").append(shopId);
//                                    try {
//                                        UserDaoSql.getInstance().executeBySql(sb.toString());
//                                    } catch (SQLException e) {
//                                        e.printStackTrace();
//                                        continue;
//                                    }
//                                    System.out.println(shoplist.get(i).getShopName() + "上班时间：" + nowTime);
//                                }
//                                flag = true;
//                                break;
//                            }
//                        }
//                        // 此刻并未在该店铺营业范围内
//                        if (!flag) {
//                            // 如果该店铺状态不是下班ing
//                            if (null != isWork && 0 == isWork - 1) {
//                                StringBuilder sb = new StringBuilder();
//                                sb.append("update ").append(PojoTables.ShopInfo).append(" set isWork=").append(0)
//                                        .append(" where delFlag = 0 and id =").append(shopId);
//                                try {
//                                    UserDaoSql.getInstance().executeBySql(sb.toString());
//                                } catch (SQLException e) {
//                                    e.printStackTrace();
//                                    continue;
//                                }
//                                System.out.println(shoplist.get(i).getShopName() + "下班时间：" + nowTime);
//                            }
//                        }
//                        //缓存更新
//                        ShopMemory.getInstance().modifyById(shopId);
//                    }
//                }
//            }
//        }
//    }


    public static void main(String[] args) {

//        if (end < start) {
//            if (now >= end && now < start) {
//                return false;
//            } else {
//                return true;
//            }
//        } else {
//            if (now >= start && now < end) {
//                return true;
//            } else {
//                return false;
//            }
//        }

        Long starTime = Long.parseLong("08:25".replace(":", ""));
        String nowTime = "0827";
        System.out.println(starTime);
        System.out.println(Long.parseLong(nowTime));
        System.out.println(starTime - Long.parseLong(nowTime));
        System.out.println(starTime.compareTo(Long.parseLong(nowTime)));

    }


}
